`timescale	1ps/1ps
module phy_RGMII_rec_io(
	input	wire		rst,

	input	wire		rxc,
	input	wire		rxdv,
	input	wire	[3:0]	rxd,

	output	wire		rx_clk,
	output	reg		rx_dv,
	output	reg	[7:0]	rx_data,

	output	reg		rx_er,
	output	reg		rx_crs,
	output	reg		rx_col
	);

//*******************************************/
//		信号定义
//*******************************************/
wire		rxc_temp,rxdv_temp;
wire	[3:0]	rxd_temp;
wire		rx_dv_temp,rx_er_temp;
wire	[7:0]	rx_data_temp;

//*******************************************/
//		rxc处理
//*******************************************/

/*clk_ctrl_block	clk_ctrl_block_inst (
	.inclk ( rxc ),
	.outclk ( rx_clk )
	);*/
assign rx_clk=rxc;

	

//*******************************************/
//		DDR INPUT
//*******************************************/

//****************rxdv*****************/
phy_iddr_1bit	iddr_1bit_inst (
	.datain ( rxdv ),
	.inclock ( rx_clk ),
	.dataout_h ( rx_er_temp ),
	.dataout_l ( rx_dv_temp )
	);

//****************rxd*****************/
phy_iddr	iddr_inst (
	.datain ( rxd),
	.inclock ( rx_clk ),
	.dataout_h ( rx_data_temp[7:4] ),
	.dataout_l ( rx_data_temp[3:0] )
	);
	
//*******************************************/
//		二次处理
//*******************************************/
always@(posedge rx_clk or posedge rst)
	if(rst)
		rx_dv<=1'b0;
	else
		rx_dv<=rx_dv_temp;
		
always@(posedge rx_clk or posedge rst)
	if(rst)
		rx_data<=8'b0;
	else 
		rx_data<=rx_data_temp;

always@(posedge rx_clk or posedge rst)
	if(rst)
		rx_er<=1'b0;
	else
		rx_er<=(rx_er_temp^rx_dv_temp);

always@(posedge rx_clk or posedge rst)
	if(rst)
		rx_crs<=1'b0;
	else
		rx_crs<=(rx_er_temp|rx_dv_temp);

always@(posedge rx_clk)
	rx_col<=1'b0;

endmodule
